/**
 * entity 控制
 */
import { lodLayer } from '@/components/dt-scene/index.vue'
export default {
  data() {
    return {
      visibleId: '',
      visibleIds: []
    }
  },
  methods: {
    /**
      * 移除单个entity
      * @author wzw
      * @date 2021-12-16
      * @param {any} id
      * @returns {any}
      */
    removeEntity(id) {
      let entity = lodLayer.getEntityById(id)
      if (entity) {
        lodLayer.remove(entity)
        let index = this.visibleIds.indexOf(id)
        this.visibleIds.splice(index, 1)
      }
    },
    /**
     * 单个entity显隐控制
     * @author wzw
     * @date 2021-12-16
     * @param {any} id
     * @param {any} status
     * @returns {any}
     */
    changeEnityVisible(id, status) {
      let entity = lodLayer.getEntityById(id)
      entity.show = status
      let index = this.visibleIds.indexOf(id)
      if (status && index === -1) {
        // 如果是显示，则增加进 visibleIds
        this.visibleIds.push(id)
      }
      if (!status && index !== -1) {
        this.visibleIds.splice(index, 1)
      }
    },
    /**
     * 批量Entity显隐控制
     * @author wzw
     * @date 2021-12-16
     * @param {any} ids
     * @param {any} status
     * @returns {any}
     */
    changeEnityVisibleBatch(ids, status) {
      ids.forEach(item => {
        let entity = lodLayer.getEntityById(item)
        if (entity) {
          entity.show = status
        }
        let index = this.visibleIds.indexOf(item)
        if (status && index === -1) {
          // 如果是显示，则增加进 visibleIds
          this.visibleIds.push(item)
        }
        if (!status && index !== -1) {
          this.visibleIds.splice(index, 1)
        }
      })
    },
    // /**
    //  * 切换卫星显示隐藏
    //  * @author Farley
    //  * @date 2021-12-21
    //  * @param {any} data
    //  * @param {any} visible
    //  * @returns {any}
    //  */
    // toggleEntityVisible(data, visible) {
    //   if (data.children && data.children.length > 0) {
    //     data.children.forEach(item => {
    //       this.toggleEntityVisible(item, visible)
    //     })
    //   } else {
    //     let entity = lodLayer.getEntityById(data.id)
    //     if (entity) {
    //       entity.show = visible
    //     }
    //   }
    // },
    /**
     * 动态改变当前卫星显示与隐藏,只需传进来当前勾选的卫星ID数组
     * @author wzw
     * @date 2021-12-17
     * @param {any} data
     * @returns {any}
     */
    dynamicChangeEntityVisible(data) {
      this.visibleIds.forEach(item => {
        let isExist = data.includes(item)
        if (!isExist) {
          let entity = lodLayer.getEntityById(item)
          if (entity) {
            entity.enabled = false
          }
        }
      })
      data.forEach(item => {
        let isExist = this.visibleIds.includes(item)
        if (!isExist) {
          let entity = lodLayer.getEntityById(item)
          if (entity) {
            entity.enabled = true
          }
        }
      })
      this.visibleIds = data
    },
    /**
     * 移除layer所有对象,不仅仅是卫星,地面站轨迹等等都移除
     * @author wzw
     * @date 2021-12-17
     * @returns {any}
     */
    removeAllLayerEntity() {
      lodLayer.removeAll()
    },
    /**
     * 回滚卫星显隐,传入当前显示的卫星,会根据visibleIds存储的卫星,回退到上一步显示状态
     * @author wzw
     * @date 2021-12-17
     * @param {any} data
     * @returns {any}
     */
    rollBackSatelliteVisible(data) {
      this.visibleIds.forEach(item => {
        let entity = lodLayer.getEntityById(item)
        if (entity) {
          entity.enabled = true
        }
      })
      // data.forEach(item => {
      //   let entity = lodLayer.getEntityById(item)
      //   let polyline = lodLayer.getEntityById('pol-' + item)
      //   if (entity) {
      //     if (!this.visibleIds.includes(item)) {
      //       entity.show = false
      //       polyline.show = false
      //     }
      //   }
      // })
    },
    /**
     * 循环找到所有ID
     * @author wzw
     * @date 2021-12-13
     * @param {any} data
     * @returns {any}
     */
    getAllIds(data) {
      let res = []
      if (data.length > 0) {
        data.forEach(item => {
          res.push(item.id)
          if (item.children && item.children.length > 0) {
            let tmp = this.getAllIds(item.children)
            res = res.concat(tmp)
          }
        })
      }
      return res
    },
  }
}